个人技术总结

您所在的位置:网站首页 unity camera控制 个人技术总结

个人技术总结

2023-06-13 01:59| 来源: 网络整理| 查看: 265

这个作业属于哪个课程2023年福大-软件工程实践-W班这个作业要求在哪里软件工程实践总结&个人技术博客这个作业的目标个人技术总结其他参考文献参考文献见文末

目录技术概述技术详述技术使用中遇到的问题和解决过程总结参考文献

技术概述 角色移动是通过获取玩家的输入值,然后对角色的位置进行控制来实现的。角色跳跃则是给角色施加一个向上的力,使其离开地面,再控制下落时的行为界面的切换通常是指在游戏运行时切换不同的UI界面,让玩家能够从一个界面进入到另一个界面。 技术详述

实现角色移动和跳跃

创建一个空对象,作为游戏角色的父对象,将游戏角色作为其子对象,在场景中设置好位置。

给游戏角色添加一个刚体(Rigidbody)组件,并勾选“Use Gravity”选项,以实现游戏角色受重力影响的物理效果。

在脚本中获取游戏角色的刚体,并通过代码控制角色的移动和跳跃。具体实现方法如下:

public class PlayerController : MonoBehaviour { public float speed; // 移动速度 public float jumpForce; // 跳跃力度 private Rigidbody rb; void Start() { rb = GetComponent(); } void FixedUpdate() { float moveHorizontal = Input.GetAxis("Horizontal"); float moveVertical = Input.GetAxis("Vertical"); Vector3 movement = new Vector3(moveHorizontal, 0.0f, moveVertical); rb.AddForce(movement * speed); if (Input.GetKeyDown(KeyCode.Space)) { rb.AddForce(Vector3.up * jumpForce, ForceMode.Impulse); } } }

上述代码中,首先定义了两个公共变量speed和jumpForce,分别表示游戏角色的移动速度和跳跃力度。然后在Start()方法中获取游戏角色的刚体组件。在FixedUpdate()方法中,通过Input.GetAxis()方法获取玩家输入的水平和垂直方向的移动值,将其作为一个Vector3对象movement的x、y、z分量。然后调用刚体组件的AddForce()方法,传入movement * speed参数,实现游戏角色的移动效果。 最后,在FixedUpdate()方法中判断如果玩家按下空格键,则调用AddForce()方法给游戏角色施加一个向上的力,实现跳跃效果。注意在运用跳跃时,可以调整 rb.AddForce(Vector3.up * jumpForce, ForceMode.Impulse);里面的jumpForce大小,来达到所需的跳跃高度。

移动时,通常可以使用刚体组件的AddForce()方法或transform组件的Translate()方法来改变角色的位置。在给角色应用力或转换位置时,需要考虑角色和场景中其他对象之间的碰撞和物理效应,可以使用碰撞器组件和刚体组件来实现。

跳跃时,需要考虑跳跃的高度、跳跃的速度和跳跃时的动画等问题。可以通过调整施加的力的大小来控制跳跃高度和速度,并通过动画控制器来设置跳跃时的动画。

切换界面的交互操作

1.在unity场景中添加两个画布以及文本和按钮组件

请添加图片描述

效果如图所示:

请添加图片描述

请添加图片描述

2.创建一个切换画布的脚本 ,命名为ChangeCanvasusing System.Collections;using System.Collections.Generic;using UnityEngine;

public class ChangeCanvas : MonoBehaviour{ public GameObject CanvasOn;//定义打开画布 public GameObject CanvasOff;//定义关闭画布

public void changeCanvas()//定义切换画布的方法 { CanvasOn.SetActive(true);//实现打开画布 CanvasOff.SetActive(false) ;//实现关闭画布 }

}

3.把脚本添加到两个画布的Button组件上,并挂上两个画布

请添加图片描述

在第一个画布中,点击按钮后实现关闭第一个画布,打开第二个画布

请添加图片描述

在第二个画布中,点击按钮后实现关闭第二个画布,打开第一个画布4.隐藏其中的一个画布

请添加图片描述

技术使用中遇到的问题和解决过程

困难

实现角色的平滑移动:实现角色的平滑移动需要考虑多个因素,如速度、加速度、重力等,而这些因素需要通过代码控制。为了实现平滑移动,需要使用插值方法来计算每一帧相机、角色位置之间的差值,从而让角色运动起来更流畅。

实现角色的跳跃:实现角色的跳跃需要考虑多个因素,如跳跃高度、跳跃速度、跳跃时的动画效果等。可以通过添加动画控制器来实现跳跃的过渡效果,并通过代码控制初始速度和重力等参数来控制跳跃高度和速度。

碰撞检测:在进行角色移动和跳跃时,需要进行碰撞检测,以确保角色不会穿过物体或掉落。可以通过添加碰撞器组件和物理材料来实现物理模拟和碰撞检测。

实现多个场景之间的切换:通过场景管理器(Scene Manager)切换场景时,原先的场景状态会被重置,这意味着所有的游戏对象、变量、脚本等都会被清空,如果不做特殊处理,这些信息将无法在场景之间传递。

实现用户界面(UI)的切换和交互:在实现用户界面(UI)的切换和交互时,需要考虑到多个UI元素之间的交互,如按钮点击、文本输入等,同时还需要控制UI元素的显示和隐藏。

解决方法

实现平滑移动:可以使用Unity的内置运动控制组件Character Controller来实现平滑移动。该组件提供了多种移动方式,如直线移动、旋转移动、跳跃等,同时还可以设置加速度、阻力、重力等参数。实现角色的跳跃:在实现角色的跳跃时,可以使用刚体组件来模拟物理效果。通过在角色身上添加刚体,并通过代码控制其初速度和重力等参数,就可以实现跳跃的效果。同时,还可以通过添加动画控制器来实现跳跃时的动画效果。碰撞检测:可以使用Unity提供的碰撞器组件来进行碰撞检测。例如,当角色与墙壁碰撞时,可以通过代码控制角色的移动方向和速度,以确保角色不会穿过墙壁。同时,还可以使用光线投射来进行简单的物理模拟,例如模拟弹跳效果等。可以使用DontDestroyOnLoad函数来保留当前场景中的特定游戏对象,从而在场景之间传递信息。此外,还可以使用全局变量或静态变量来进行信息传递。可以使用Unity提供的UI系统,包括Canvas、Button、Text等组件来实现交互界面。通过添加事件监听器(Event Listener)来相应用户的点击事件,并通过代码控制UI元素的显示和隐藏,可以实现复杂的交互效果。此外,还可以使用动画控制器来实现平滑的UI过渡效果,增强用户体验。 总结

总的来说,角色移动、跳跃和切换界面的交互操作是游戏中比较重要和基础的功能,掌握好这几个方面的编程技巧可以帮助开发出更具有交互性和趣味性的游戏。

参考文献

unity3D角色移动跳跃unity3D切换界面



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3